/**
 * @file    interfaces/devices.h
 * @brief   Include all interfaces of wosh::interfaces::Device type
 ****************************************************************************
 * @namespace wosh::interfaces::devices
 * @brief     Contains standard interfaces of WOSH devices, a convenient classification of wosh::Bundle.

 * wosh::interfaces::Device is a sub-class of a generic wosh::interfaces::IBundle,
 * it represent a generic virtual device or an adapter to a real device.
 *
 * Some bundles may act as single (unique) adapter to a real (standalone) device
 * such a modem or hardware component (example: wosh::devices::ModemDslBundle), other
 * may work as a protocol broker and handle many devices of different types
 * (such as wosh::services::HeyuBundle).
 *
 * \note
 *  There re very few differences between Services and Devices, sometimes they are even
 *  combined (inherited both) by a Bundle. Classification model is mostly conceptual:
 *
 * Implementations are usually platform, driver and hardware dependent,
 * there are often many instances of a type within one host and the whole WOSH network.
 * See \ref Devices module for listing of official implementations.
 *
 * Devices are dynamically (un)registered and managed by core-module wosh::DeviceManager.
 * 
 * Some examples of device-interfaces are: switch, dimmer, audio-box, modem, light and motion sensor, ..
 *
 * End-users usually access to devices through an higher layer provided by
 * \ref page_framework_building and service wosh::services::BuildingManagerBundle.
 *
 *
 * @see       \ref page_core_bundles, \ref page_core_devices
 * @see       wosh::interfaces::Device
 * @see       wosh::interfaces::services
 * @ingroup   Interfaces
 ****************************************************************************
 * \defgroup Devices WOSH Devices
 *
 * This page groups all official \c Bundles classified as \b Device, they implement
 * a sub-class of wosh::interfaces::Device.
 *
 * Bundles of this list (classified as \c Device) are usually adapters
 * to a specific hardware (often based on 3rd-party libraries), but they act
 * as any other wosh::Bundle (even of \c Service type)
 *
 * A very simple example of Device (Bundle) is wosh::devices::ModemDslBundle.
 *
 * This category of bundles is also listed and referred by wosh::DeviceManager core-module.
 * Specification asserts that such bundles register themselves as device on \c bundle-start action
 * and un-register on \c bundle-stop event.
 *
 * List of official bundles organized by category:
 *
 *  - Mutimedia / Entertainment
 *    - \ref wosh::devices::PlayerGStreamerBundle "PlayerGStreamer" - Audio player based on \c gstreamer library  (POSIX only)
 *    - \ref wosh::devices::PlayerPhononBundle "PlayerPhonon" - Audio player based on \c QT \c phonon library (multiplatform)
 *    - \ref wosh::devices::VlcPlayerBundle "VlcPlayer" - Audio player based on \c VLC library (multiplatform)
 *
 *  - Communication / Messaging
 *    - \ref wosh::devices::JabberGlooxBundle "JabberGloox" - \ref wosh::interfaces::services::CommunicatorService "Communicator Service" for instant messaging: bot for Jabber protocol (such as GTalk)
 *    - \ref wosh::devices::WindowsMobileBundle "WindowsMobile" - adapter for Windows CE/Mobile 6.x system, support messaging and TAPI functionalities.
 *    - \ref wosh::devices::MailBoxBundle "MailBox" - wrapper to POP3 mailbox (and SMTP server).
 *    - \ref wosh::devices::VGettyAMBundle "VGettyAM" - answering machine based on vgetty software, (POSIX only)
 *
 *  - Real Devices
 *    - \ref wosh::devices::ModemDslBundle "ModemDsl" - provides functionalities similar (and based on) \c pppstats utility
 * of POSIX systems (part of \c PPPoE package).
 *
 *  - Virtual Devices
 *    - \ref wosh::devices::TestDeviceBundle "TestDevice" - virtual device for debug and testing purposes.
 *
 * @see     \ref page_core_devices, wosh::DeviceManager
 * @see     \ref page_core_bundles, wosh::BundleManager
 * @see     wosh::interfaces::devices
 ****************************************************************************
 * @version 0.8.499 $Id: devices.h 2288 2010-04-09 08:33:26Z alex $
 * @author  Alessandro Polo
 ****************************************************************************/
/* Copyright (c) 2007-2010, WOSH - Wide Open Smart Home 
 * by Alessandro Polo - OpenSmartHome.com
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are met:
 *     * Redistributions of source code must retain the above copyright
 *       notice, this list of conditions and the following disclaimer.
 *     * Redistributions in binary form must reproduce the above copyright
 *       notice, this list of conditions and the following disclaimer in the
 *       documentation and/or other materials provided with the distribution.
 *     * Neither the name of the OpenSmartHome.com WOSH nor the
 *       names of its contributors may be used to endorse or promote products
 *       derived from this software without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY Alessandro Polo ''AS IS'' AND ANY
 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
 * DISCLAIMED. IN NO EVENT SHALL Alessandro Polo BE LIABLE FOR ANY
 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 ****************************************************************************/

#ifndef __WOSH_Interfaces_Devices_H__
 #define __WOSH_Interfaces_Devices_H__

 #include <woshDefs.h>

namespace wosh {
 namespace interfaces {
  namespace devices { };
 };
};

 #include <interfaces/Device.h>

 #include <interfaces/devices/DeviceX10.h>
 #include <interfaces/devices/Dimmer.h>
 #include <interfaces/devices/JabberGloox.h>
 #include <interfaces/devices/MailBox.h>
 #include <interfaces/devices/Modem.h>
 #include <interfaces/devices/Phone.h>
 #include <interfaces/devices/PlayerAudio.h>
 #include <interfaces/devices/SensorLight.h>
 #include <interfaces/devices/SensorMotion.h>
 #include <interfaces/devices/Switch.h>
 #include <interfaces/devices/TestDevice.h>
 #include <interfaces/devices/VGettyAM.h>
 #include <interfaces/devices/WindowsMobile.h>



#endif //__WOSH_Interfaces_Devices_H__
